Given two strings s and t, determine if they are isomorphic.
Two strings s and t are isomorphic if the characters in s can be replaced to get t.
All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.
bool isIsomorphic(char * s, char * t){
}
從今天開始的題目主題是 String,在C語言中都是以字元陣列來表示字串(string),特別的地方是字元陣列都要以 '\0' 這個特殊字元來結尾,如圖Fig. 1所示,字元陣列裡依次儲存的是'a' 'p' 'p' 'l' 'e',最後是 '\0'。
這個特性使得字元陣列在傳遞時可以不需要再給陣列的長度,可以經由固定的結尾 '\0' 來計算長度,如下方程式碼,由 i 就可以得到字元陣列的長度。
int i = 0;
while (s[i] != '\0') {
i++;
}
Leetcode也可以使用C語言內建的string函數,例如strlen(const char *)用來回傳字元陣列的大小,strcmp(const char *, const char *)用來比較2個字串的字典大小,這些都會在後面題目使用。由題目所知,我們就像在對字串進行編碼和解碼,將特定字母替換成特定字母後,看看是否可以還原成原來的字串。
/* 最後上傳 */
bool isIsomorphic(char * s, char * t){
return !(isConflict(s, t) || isConflict(t, s)); // 對調s, t順序確認字元對應
}
bool isConflict(char * s, char * t) {
int i = 0;
int char_table[128] = {0}; // 可記錄所有ascii元素對應
while (s[i] != '\0') {
if ((char_table[s[i]] != 0) && (char_table[s[i]] != t[i])) {
return 1;
} else {
char_table[s[i]] = t[i];
}
i++;
}
return 0;
}
今天到這裡結束,謝謝大家,明天見。